﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using DalNHibernat.Mapping;
using NHibernate.Criterion;
using Modelo;

namespace DalNHibernat.Implementacao
{
    public class DalCliente : Modelo.Interface.IDalCliente
    {
        private readonly ISession _session;

        public DalCliente(ISession session)
        {
            _session = session;
        }

        #region Basic
        

        public IList<Modelo.Cliente> ListaClientes()
        {
            return _session.CreateCriteria<Modelo.Cliente>()
                .SetMaxResults(20).List<Modelo.Cliente>();
        }

        

        public void Delete(Modelo.Cliente cliente)
        {
            _session.Delete(cliente);
        }

        public void Update(Modelo.Cliente cliente)
        {
            _session.Update(cliente);
        }

        #endregion

        public Modelo.Cliente GetByName(string name)
        {
            return _session.CreateCriteria<Modelo.Cliente>()
                .Add(Expression.Eq("Name", name))
                .SetMaxResults(1)
                .List<Modelo.Cliente>().FirstOrDefault<Modelo.Cliente>();
        }


        bool Modelo.Interface.IDalCliente.InsereCliente(Cliente cliente)
        {
            _session.SaveOrUpdate(cliente);
            return true;
        }

        public Cliente RetornaClienteID(int id)
        {
            return _session.Get<Modelo.Cliente>(id);
        }

        public bool UpdateCliente(Cliente cliente)
        {
            throw new NotImplementedException();
        }

        public void ExcluiCliente(int id)
        {
            throw new NotImplementedException();
        }
    }
}
